Ext.define('SubjectView', {
	extend : 'Ext.panel.Panel',
	id : 'SubjectView',
	title : '选题申报管理',
	region : 'center',
	layout : 'border',
	iconCls: 'menu-cusLinkman',

	initComponent : function() {		
		this.searchPanel = new KE.SearchPanel({
					region : 'north',
					items : [{
								text : '题目'
							}, {
								width : 120,
								name : 'Q_LIKES_name',
								xtype : 'textfield'								
							}, {
								text : '教师'
							}, {
								width : 120,
								name : 'Q_LIKES_teacher.fullname',
								xtype : 'textfield'								
							}, {
								text : '状态'
							}, {
								width : 120,
								hiddenName : 'Q_EQI_status',
								xtype : 'combo',
								editable : false,
								triggerAction : 'all',
								store : [[1, '草稿'], [2, '待审核'], [3, '审核不通过'], [4, '审核通过'], [5, '预选成功']]
							}, {
								xtype : 'button',
								text : '查询',
								scope : this,
								iconCls : 'btn-search',
								handler : this.search
							}, {
								xtype : 'button',
								text : '清空',
								scope : this,
								iconCls : 'reset',
								handler : this.reset
							}]
				});

		this.topbar = new Ext.Toolbar({
					items : [{
								iconCls : 'btn-add',
								text : '添加题目',
								xtype : 'button',
								scope : this,
								handler : this.createRs
							}, {
								iconCls : 'btn-del',
								text : '删除题目',
								xtype : 'button',
								scope : this,
								handler : this.removeSelRs
							}, '-', {
								iconCls : 'btn-transition',
								text : '提交至审核',
								xtype : 'button',
								scope : this,
								handler : this.checkRs
							}, '-', {
								iconCls : 'btn-mail_recipient',
								text : '指派学生',
								xtype : 'button',
								scope : this,
								handler : this.fenpei
							}]
				});

		this.gridPanel = new KE.GridPanel({
			region : 'center',
			tbar : this.topbar,
			id : 'SubjectGrid',
			exportable : true,
			exportCfg : {
				expSel : true,
				selId : 'oid',
				selUrl : __ctxPath + "/byxt/exportSelSubject.do",
				execl : true,
				pdf : false
			},
			url : __ctxPath + "/byxt/listMySubject.do",
			fields : ['oid', 'name', 'status', {
								name : 'teacher.fullname',
								mapping : 'teacher.fullname'
							}, {
								name : 'fromType.itemValue',
								mapping : 'fromType.itemValue'
							}, {
								name : 'type.itemValue',
								mapping : 'type.itemValue'
							}],
			columns : [{
						header : 'ID',
						dataIndex : 'oid',
						hidden : true
					}, {
						header : '题目',
						dataIndex : 'name',
						flex: 2
					}, {
						header : '指导教师',
						dataIndex : 'teacher.fullname'
					}, {
						header : '题目来源',
						dataIndex : 'fromType.itemValue'
					}, {
						header : '题目类型',
						dataIndex : 'type.itemValue'
					}, {
						header : '状态',
						dataIndex : 'status',
						renderer: function(v) {
							if(v==1) return '<span class="bg-default">草稿</span>';
							if(v==2) return '<span class="bg-info">待审核</span>';
							if(v==3) return '<span class="bg-warning">审核不通过</span>';
							if(v==4) return '<span class="bg-primary">审核通过</span>';
							if(v==5) return '<span class="bg-success">预选成功</span>';
						},
						javaRenderer: 'showStatus'
					}, {
						text : '管理',
						xtype : 'actioncolumn',
						items : [{
									iconCls : 'btn-view',
									tooltip : '查看流转信息',
									scope : this,
									handler : function(grid, rowIndex, colIndex) {
										var rec = grid.getStore().getAt(rowIndex);
										this.viewRs(rec);
									}
								}, {
									iconCls : 'btn-del',
									tooltip : '删除',
									scope : this,
									handler : function(grid, rowIndex, colIndex) {
										var rec = grid.getStore().getAt(rowIndex);
										this.removeRs(rec.data.oid);
									},
									getClass : function(v, g, rec) {
										// 草稿，可删除
										var s = rec.data.status;
										return (s==1)? 'btn-del':'x-hidden';
									}
								}, {
									iconCls : 'btn-edit',
									tooltip : '编辑',
									scope : this,
									handler : function(grid, rowIndex, colIndex) {
										var rec = grid.getStore().getAt(rowIndex);
										this.editRs(rec);
									},
									getClass : function(v, g, rec) {
										// 草稿和审核不通过，可编辑
										var s = rec.data.status;
										return (s==1||s==3)? 'btn-edit':'x-hidden';
									}
								}]
					}]
		});

		this.items = [this.searchPanel, this.gridPanel];
		this.callParent();
		this.gridPanel.on('rowdblclick', this.rowClick);
	},
	// 重置查询表单
	reset : function() {
		this.searchPanel.getForm().reset();
		Ext.each(this.searchPanel.query('combo'), function(c) {
			c.setValue('');
			c.setRawValue(' ');
		});
	},
	// 按条件搜索
	search : function() {
		$search({
			searchPanel : this.searchPanel,
			gridPanel : this.gridPanel
		});
	},
	// GridPanel行点击处理事件
	rowClick : function(grid, rec) {
		if(rec.data.status == 1 || rec.data.status == 3)
		new SubjectForm({
			sid : rec.data.oid
		}).show();
		else
			new SubjectCheckForm({
				sid : rec.data.oid
			}).show();
		
	},
	// 创建记录
	createRs : function() {
		new SubjectForm().show();
	},
	// 按ID删除记录
	removeRs : function(id) {
		$postDel({
			url : __ctxPath + '/byxt/multiDelSubject.do',
			ids : id,
			grid : this.gridPanel
		});
	},
	// 把选中ID删除
	removeSelRs : function() {
		var selRs = this.gridPanel.getSelectionModel().getSelection();
		if(selRs.length == 0) {
			Ext.ux.Toast.msg('操作信息', '请选择要操作的记录！');
			return false;
		}
		var ids = [];
		for(var i=0; i<selRs.length; i++) {
			var status = selRs[i].data.status;
			if(status!=1 && status!=3) {
				Ext.ux.Toast.msg('操作信息', '只能选择【草稿】或【审核不通过】状态的记录！');
				return false;
			}
			ids.push(selRs[i].data.oid);			
		}		
		$delGridRs({
			url : __ctxPath + '/byxt/multiDelSubject.do',
			grid : this.gridPanel,
			idName : 'oid'
		});
	},
	// 编辑Rs
	editRs : function(record) {
		new SubjectForm({
			sid : record.data.oid
		}).show();
	},
	// 流转信息
	viewRs: function(record) {
		new WndShow({
			height : 450,
		    width : 850,
			title: '流转信息',
			url: __ctxPath + '/byxt/showOpinionSubject.do?oid=' + record.data.oid
		}).show();
	},
	// 提交至审核 
	checkRs: function() {
		var selRs = this.gridPanel.getSelectionModel().getSelection();
		if(selRs.length == 0) {
			Ext.ux.Toast.msg('操作信息', '请选择要操作的记录！');
			return false;
		}
		var ids = [];
		for(var i=0; i<selRs.length; i++) {
			var status = selRs[i].data.status;
			// 草稿和审核不通过状态才能提交
			if(status!=1 && status!=3) {
				Ext.ux.Toast.msg('操作信息', '只能选择【草稿】或【审核不通过】状态的记录！');
				return false;
			}
			ids.push(selRs[i].data.oid);			
		}		
		// 提交
		$postAjax({
			url: __ctxPath + '/byxt/checkTo2Subject.do',
			params: {
				ids: ids.join(',')
			},
			grid: this.gridPanel
		});
	},
	// 指派学生
	fenpei : function() {
		var rec = $selectOne(this.gridPanel);
		if(!rec) return;
		if(rec.status == 5) {
			Ext.ux.Toast.msg('操作信息', '该题目已经【预选成功】，不可以再指派其他学生！');
			return;
		}
		if(rec.xscnt >= 5) {
			Ext.ux.Toast.msg('操作信息', '该题目已经超过最大预选数，不可以再被预选！');
			return;
		}
		var me = this;
		StudentSelector.getView(
				function(ids, names) {
					$postAjax({
						scope: this,
						url: __ctxPath + '/byxt/addStudentYuXuan.do',
						params: {
							oid: rec.oid,
							studentId: ids	
						},
						callback: function(json) {
							if(json.success) {
								Ext.ux.Toast.msg('操作信息', "指派成功！");
								me.gridPanel.getStore().reload();
							} else {
								Ext.ux.Toast.msg('操作信息', json.message);
							}
						}
					});
				}, true).show();
	}

});
